﻿using System;
using System.Windows.Forms;
using Plugins.Interfaces;

namespace Plugins.Core.Interfaces
{
    public interface IPluginWindow : IPluginEntity,
        IPluginConnector<IPluginOptions>,
        IPluginConnector<IPluginWindowHost>
    {
        event EventHandler<EventArgs> NotifyStart;
        event EventHandler<EventArgs> NotifyStop;

        event EventHandler<PluginWindowEventArgs> NotifyOpen;
        event EventHandler<PluginWindowEventArgs> NotifyClose;

        event EventHandler<PluginWindowEventArgs> NotifyLoad;
        event EventHandler<PluginWindowEventArgs> NotifyUnload;

        string Name { get; }

        DialogResult OpenWindow(IWin32Window owner, bool modalDialogWindow, bool closeOnExit);
        DialogResult OpenWindow(bool modalDialogWindow, bool closeOnExit);
        void CloseWindow();

        IPluginWindowItem ToolBarWindowItems { get; }

        bool Visible { get; }
    }
}